/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.ejb;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import com.entity.Usuario;
import java.util.List;
import javax.persistence.NoResultException;
import javax.persistence.NonUniqueResultException;

/**
 *
 * @author victor & Diego & update andres
 */
@Stateless
public class UsuarioFachadaBean implements UsuarioFachadaRemote, UsuarioFachadaLocal {
    @PersistenceContext
    private EntityManager em;

    public void persist(Object object) {
        em.persist(object);
    }

    public boolean ExisteNick(String Nick) {
        Query miConsulta =  em.createNamedQuery("Usuario.ExisteNick");
        miConsulta.setParameter("Nick",Nick);
        Usuario miUsuario = null ;
        boolean Existe=false;
        try
        {
            miUsuario = (Usuario)miConsulta.getSingleResult();

        }catch ( NoResultException e)
                {
                   Existe=false;
                }
        catch ( NonUniqueResultException e)
                {
                   Existe=true;
                }
        if (miUsuario!=null) Existe=true;
        return Existe;
    }

    public Usuario ExisteUsuario(String Nick, String Pass) {

        Query miConsulta =  em.createNamedQuery("Usuario.ExisteUsuario");
        miConsulta.setParameter("Nick",Nick);
        miConsulta.setParameter("Pass",Pass);
        Usuario miUsuario = null ;
        try
        {
            miUsuario = (Usuario)miConsulta.getSingleResult();

        }catch ( Exception e){}
        return miUsuario;
    }

    public List ListadoAdmin(){
    Query miConsulta = em.createNativeQuery("Select Usuario.ID, Usuario.Nick, Usuario.Nombre, Usuario.Apellido, Usuario.Fecha_Nacimiento FROM Usuario  WHERE Usuario.ESADMINISTRADOR=true");
    List res = null;
    try{
        res=miConsulta.getResultList();
    }catch(Exception e){}
    return res;
    }

        public void CambiarPass(String nick, String Pass) {
        Query miConsulta =  em.createNamedQuery("Usuario.CambiarPass");
        miConsulta.setParameter("Pass",Pass);
        miConsulta.setParameter("nick",nick);
        
        try
        {
            miConsulta.executeUpdate();

        }catch ( NoResultException e){}
        return ;
    }

  public List ListadoCumple(){ 

        Query miConsulta = em.createNativeQuery("SELECT usuario.nick, usuario.nombre, usuario.apellido FROM usuario WHERE extract(month from fecha_nacimiento) = extract(month from current_date) and extract(day from fecha_nacimiento) = extract(day from current_date) and esadministrador = false");
    
        List miRes = null;
        try
        {
            miRes = miConsulta.getResultList();
        }catch ( Exception e ){ }

    return miRes;
    }

  public Usuario usuarioID (String Nick) {
        Query miConsulta =  em.createNamedQuery("Usuario.ExisteNick");
        miConsulta.setParameter("Nick",Nick);
        Usuario miUsuario = null ;
        try
        {
            miUsuario = (Usuario)miConsulta.getSingleResult();

        }catch ( NoResultException e) { }
        return miUsuario;
    }

  public boolean ExisteEmail(String Email)
  {
        Query miConsulta =  em.createNamedQuery("Usuario.ExisteEmail");
        miConsulta.setParameter("Email",Email);
        Usuario miUsuario = null ;
        boolean Existe=false;
        try
        {
            miUsuario = (Usuario)miConsulta.getSingleResult();

        }catch ( NoResultException e)
                {
                   Existe=false;
                }
               catch ( NonUniqueResultException e)
                {
                   Existe=true;
                }
        if (miUsuario!=null) Existe=true;
        return Existe;
    }
    
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method" or "Web Service > Add Operation")
 
}
